/******************************************************************************
 * \brief   一次性静态初始化所有系统缓存队列
 * \details 尤其适合用在单片机裸机中
 * \note	File format: UTF-8，中文编码：UTF-8
 * \author	将狼才鲸
 * \date	2023-03-08
 ******************************************************************************/

#ifndef _QUEUE_BUFFER_CONFIG_H_
#define _QUEUE_BUFFER_CONFIG_H_

/*********************************** 宏定义 ***********************************/
/* 每个队列的总个数和总大小预先确定好 */

/** 数据缓存队列 */
#define DATBUF_MAX_BUF_CNT	128
#define DATBUF_MAX_BUF_LEN	(1 * 1024)
extern char g_databuf_addr[DATBUF_MAX_BUF_CNT * DATBUF_MAX_BUF_LEN];
#define DATBUF_MAX_BUF_ADR	g_databuf_addr

/** 消息缓存队列 */
#define MSGBUF_MAX_BUF_CNT	32
#define MSGBUF_MAX_BUF_LEN	512 /* 当前有用在通信包中，该长度需大于通信包的最小长度x字节 */
extern char g_msgbuf_addr[MSGBUF_MAX_BUF_CNT * MSGBUF_MAX_BUF_LEN];
#define MSGBUF_MAX_BUF_ADR	g_msgbuf_addr

/** 变量缓存队列 */
/* 通信收发队列中能缓存的消息个数和此系统缓存队列的元素个数有关，每个通信连接需消耗2个系统缓存 */
#define TMPBUF_MAX_BUF_CNT	32
/* 当前有用在私有通信协议中的一些临时变量中，单个缓存大小需要比这些变量的大小都大 */
#define TMPBUF_MAX_BUF_LEN	512
extern char g_tempbuf_addr[TMPBUF_MAX_BUF_CNT * TMPBUF_MAX_BUF_LEN];
#define TMPBUF_MAX_BUF_ADR	g_tempbuf_addr

/* 所有缓存的个数 */
#define QBUF_MAX_COUNT	(DATBUF_MAX_BUF_CNT + MSGBUF_MAX_BUF_CNT + TMPBUF_MAX_BUF_CNT)

/********************************** 接口函数 **********************************/
/**
 * \brief   静态初始化所有缓存队列
 */
extern void qbuf_groups_cfg(void);

#endif /* _QUEUE_BUFFER_CONFIG_H_ */

/*********************************** 文件尾 ***********************************/
